package com.chigga.admin.service;

import com.chigga.admin.domain.dto.*;
import com.chigga.admin.domain.entity.UserDO;
import com.chigga.admin.domain.vo.UserVO;
import com.chigga.common.core.domain.PageResult;
import jakarta.validation.Valid;

import java.util.List;

/**
 * 用户服务接口
 * @author DefChigga
 */
public interface UserService {
    /**
     * 创建用户
     *
     * @param userCreateDTO 创建用户信息
     */
    Integer createUser(UserCreateDTO userCreateDTO);

    /**
     * 更新用户
     *
     * @param userUpdateDTO 更新用户信息
     */
    Integer updateUser(UserUpdateDTO userUpdateDTO);

    /**
     * 根据ID删除用户
     *
     * @param id 用户ID
     */
    Integer deleteUserById(Long id);

    /**
     * 批量删除用户
     *
     * @param ids 用户ID集合
     */
    Integer deleteUserBatchIds(List<Long> ids);

    /**
     * 查询用户列表
     *
     * @param userQueryDTO 查询条件
     * @return 用户列表
     */
    List<UserVO> selectUserList(UserQueryDTO userQueryDTO);


    /**
     * 分页查询用户列表
     *
     * @param userPageQueryDTO 分页查询条件
     */
    PageResult<UserVO> selectUserPage(UserPageQueryDTO userPageQueryDTO);

    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return UserVO
     */
    UserVO selectUserById(Long id);

    /**
     * 根据用户名查询用户
     * @param username 用户名
     * @return UserDO
     */
    UserDO selectUserByUsername(String username);

    /**
     * 注册用户
     * @param userRegisterUsernameDTO 注册用户信息
     */
    Integer registerUser(@Valid UserRegisterUsernameDTO userRegisterUsernameDTO);
}
